inheritance patterns